package Thread;

/**
 * java 并发包提供了读写锁：ReenTrantReadWriteLock ，他表示两个锁，一个是和读相关的操作，称为共享锁，一个是和写相关的锁，成为排他锁。
 *       一、读写锁有一下几个特征：
 *             1.公平选择性：支持非公平（默认）和公平获取锁的方式，吞吐量还是优于公平锁
 *             2.重入：读锁和写锁都支持线程重入
 *             3.锁降级：遵循获取写锁，获取读锁再释放写锁次序，写锁能够降级为读锁。
 *      二、线程进入读锁的前提条件：
 *            1.没有其他线程的写锁，
 *            2.没有写请求或者有写请求，但调用线程和持有锁的线程是同一个。
 *      三、线程进入写锁的前提条件：
 *            1.没有其他线程的读锁
 *            2.没有其他线程的写锁
 *
 *       读写锁：一个资源可以被多个线程读线程访问，或者可以被一个写线程访问，但是不能同时存在读写线程，读写互斥，读读共享。
 *
 *
 *       缺点： 1.容易造成锁饥饿现象，一直读，没有写的操作。
 *             2.在读的时候是不能进行写操作的，但是在写操作的时候，是可以读的
 *       锁降级：将写入锁降级为读锁（因为写操作权限是高于读权限的）
 *
 */
public class ReenTrantReadWriteLock_Study {

//    private volatile  Hash
//    public static void main(String[] args) {
//
//    }
}
